﻿//8.第6章的程序清单6.20中，power()函数返回一个double类型数的正整数 次幂。改进该函数，使其能正确计算负幂。另外，函数要处理0的任何次幂 都为0，任何数的0次幂都为1（函数应报告0的0次幂未定义，因此把该值处 理为1）。要使用一个循环，并在程序中测试该函数。
#include <stdio.h>
double power(double a, int b);
int main(void){
	double x, xpow;    
	int n;    
	printf("Enter a number and the integer power");    
	printf(" to which\nthe number will be raised. Enter q");   
	printf(" to quit.\n");   
	while (scanf("%lf%d", &x, &n) == 2){   
		xpow = power(x,n);        
		printf("%.3g to the power %d is %.5g\n", x, n, xpow);    
		printf("Enter next pair of numbers or q to quit.\n");    
	}
	    printf("Hope you enjoyed this power trip -- bye!\n");    
		return 0;
}
double power(double a, int b) {    
	double pow = 1;  
	int i;  
	if (b == 0)    { 
		if (a == 0)            
			printf("0 to the 0 undefined; using 1 as the value\n");       
		pow = 1.0;    }    
	else if (a == 0)        
		pow = 0.0;    
	else if (b > 0)        
		for(i = 1; i <= b; i++)            
			pow *= a;    
	else       
		pow = 1.0 / power(a, - b);  
	return pow; 
}
